package com.chen;


import java.util.LinkedHashMap;
import org.swift.util.http.WebClient;
import org.swift.util.lang.IdGen;
import com.google.gson.Gson;
import jifen.ordercard.JifenCardOrderInfoResponse;
import service.ProtocolService;

/**
 * @类名称：orderApi
 * @类描述：微能采购商卡券采购接口实现类
 * @作者：xuBin
 * @创建时间：2016年2月3日-下午4:14:00
 */
public class orderApi {
	static String pid = "wntest";// 平台分配的商户号 jp.getUsername()
	static String password = "135246";// 密钥，生成signMsg时使用，URL中不需提交本参数 jp.getPasswd()
	static String cardBatchNo = "201801097478";// 卡券批次编码，事先约定
	static String customerNo = "18668078971";// 手机号等
	static String orderId = "hunanoil1247";// 采购商的订单号，保证唯一，如果是之前提交过的订单号，会认为是重新获取卡券，返回之前订单的卡券
	static String http = "http://test.jifenfu.net:59085/orderCard2";// 接口地址

	// 构建order方法传递参数与加密
	public static JifenCardOrderInfoResponse order() throws Exception {
		// 加密参数生成signMsg,空参数不能参加签名
		LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
		map.put("submitTimestamp", "20160204192820");// 请求时间戳
		map.put("pid", pid);
		map.put("cardBatchNo", cardBatchNo);
		map.put("password", password);
		map.put("orderId", orderId);
		map.put("customerNo", customerNo);
		map.put("orderQuantity", String.valueOf(2));// 换购数量
		map.put("orderTime", "2012121212");// 换购时间,YYYYMMDDHH24MISS
		map.put("orderPoints", String.valueOf(1));// 换购积分数
		map.put("orderPrice", String.valueOf(1));//换购总金额
		map.put("provUser", "33");//用户来自哪个省
		map.put("provUse", String.valueOf(33));//使用目的地省份

		String md5 = ProtocolService.getSignMd5(map);// 将参数用MD5方式加密
		map.put("signMsg", md5);// 生成signMsg
		map.remove("password");// 请求url中不需传递password参数

		String url = http + "!order.do?" + ProtocolService.getURL(map);// 生成url
		String resp = WebClient.retrieveWebContent(url);// 获得http请求的反馈
		System.out.println(url + "\r\n" + resp);// 打印输出请求url与反馈resp
		return new Gson().fromJson(resp, JifenCardOrderInfoResponse.class);// 返回json格式的对象
	}

	//调用采购接口发起采购请求
	public static void main(String[] args) throws Exception {
		JifenCardOrderInfoResponse order = order();// 调用接口并接收返回的对象
	}

}
